package Controlador;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import Vista.JFrameCategoria;
import Modelo.Categoria;
import Modelo.CategoriaDAO;



public class ControladorJFrameCategoria implements ActionListener{

	private JFrameCategoria ventanaCategoria;
	//private ControladorJFrameCliente controladorVentanaCliente;

	public ControladorJFrameCategoria() {
		super();
		this.ventanaCategoria = new JFrameCategoria();
		this.ventanaCategoria.addListener(this);
		this.ventanaCategoria.setVisible(true);
		
	}
	@Override
	public void actionPerformed(ActionEvent e) {
		
		String actionCommand = e.getActionCommand();
		if(actionCommand.equals("Agregar"))
		{
			AgregarCategoria();
		}
		else if (actionCommand.equals("Modificar"))
		{
			ModificarCategoria();
		}
		else if (actionCommand.equals("Eliminar"))
		{
			EliminarCategoria(BuscarCategoria());
		}
		else if(actionCommand.equals("Limpiar"))
		{
			ventanaCategoria.Blanquear();
			
		}
		else if(actionCommand.equals("Salir"))
		{
			ventanaCategoria.setVisible(false);
		}
		else if(actionCommand.equals("Buscar"))
		{
			BuscarCategoria();
		}
	}
	public Categoria BuscarCategoria()
	{
		try
		{
			if(ventanaCategoria.getCodCateg().equals("") || ventanaCategoria.getNombCateg().equals(""))
			{
				ventanaCategoria.MostrarMensaje("Deben ingresar el codigo de la Categoria");
			}
			else
			{
				CategoriaDAO categoriaDAO = new CategoriaDAO();
				//Categoria categoria = new Categoria(ventanaCategoria.getCodCateg(),ventanaCategoria.getNombCateg());
				//categoria.setStatus('A'); esto va en el dao en la tira sql
				
				Categoria catego= categoriaDAO.BuscarCategoria(ventanaCategoria.getCodCateg());
				ventanaCategoria.setCodCateg(catego.getCodCategoria());
				ventanaCategoria.setNombCateg(catego.getNombCategoria());
				return catego;
			}
		}
		catch (Exception e)
		{
			ventanaCategoria.MostrarMensaje("La Categoria indicada no se encuentra registrada");
			ventanaCategoria.Blanquear();
		}
		return null;
	}
	public void AgregarCategoria()
	{
		try
		{
			if(ventanaCategoria.getCodCateg().equals("") || ventanaCategoria.getNombCateg().equals(""))
			{
				ventanaCategoria.MostrarMensaje("Deben ingresar todos los datos para agregar una Categoria");
			}
			else
			{
				CategoriaDAO categoriaDAO = new CategoriaDAO();
				Categoria categoria = new Categoria(ventanaCategoria.getCodCateg(),ventanaCategoria.getNombCateg());
				//categoria.setStatus('A'); esto va en el dao en la tira sql
				categoriaDAO.AgregarCategoria(categoria);
				ventanaCategoria.MostrarMensaje("Categoria Agregada exitosamente!");
				ventanaCategoria.Blanquear();
			}
		}
		catch (Exception e)
		{
			ventanaCategoria.MostrarMensaje("No se pudo agregar la Categoria");
			ventanaCategoria.Blanquear();
		}
		
	}
	public void ModificarCategoria()
	{
		try
		{
			if(ventanaCategoria.getCodCateg().equals("") || ventanaCategoria.getNombCateg().equals(""))
			{
				ventanaCategoria.MostrarMensaje("Deben ingresar todos los datos");
			}
			else
			{
				CategoriaDAO categoriaDAO = new CategoriaDAO();
				Categoria categoria = new Categoria(ventanaCategoria.getCodCateg(),ventanaCategoria.getNombCateg());
				//categoria.setStatus('A'); esto va en el dao en la tira sql
				categoriaDAO.ModificarCategoria(categoria);
				ventanaCategoria.MostrarMensaje("Categoria Agregada exitosamente!");
				ventanaCategoria.Blanquear();
			}
		}
		catch (Exception e)
		{
			ventanaCategoria.MostrarMensaje("No se pudo modificar la Categoria");
			ventanaCategoria.Blanquear();
		}
		
		
	}
	public void EliminarCategoria(Categoria categoria)
	{
		try
		{
			if(ventanaCategoria.getCodCateg().equals(""))
			{
				ventanaCategoria.MostrarMensaje("Debe ingresar el codigo de la Categoria");
			}
			else
			{
				CategoriaDAO categoriaDAO = new CategoriaDAO();
				
				
				Categoria cate= categoria;
				
				categoriaDAO.EliminarCategoria(cate);
				ventanaCategoria.MostrarMensaje("Cliente eliminado exitosamente!");
				ventanaCategoria.Blanquear();
				ventanaCategoria.Habilitar(false);
				ventanaCategoria.Blanquear();
			}
		}
		catch (Exception e)
		{
			ventanaCategoria.MostrarMensaje("El cliente indicado no se encuentra registrado");
			ventanaCategoria.Blanquear();
		}
		
	}
	
	
}
